package com.yushu.common.config.session;

import org.apache.shiro.cache.CacheManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.CachingSessionDAO;

import java.io.Serializable;
import java.util.UUID;
/**
 * @author test
 * @CreateDate 2020-12-03 15:47:25
 */
public class ShiroSessionDAO extends CachingSessionDAO {

    //  SessionManager将session CRUD的工作委托给SessionDAO, 可以用特定的数据源API实现SessionDAO，以将session存储于任何一种数据源中
    // 实现 CachingSessionDAO 类中的抽象方法，可以对Session进行持久化
    public ShiroSessionDAO(CacheManager cacheManager) {
        // 注入缓存管理器
        setCacheManager(cacheManager);
    }

    @Override
    protected Serializable doCreate(Session session) {
        Serializable sessionId = UUID.randomUUID().toString().replace("-", "").toUpperCase();
        assignSessionId(session, sessionId);
        return sessionId;
    }

    @Override
    protected Session doReadSession(Serializable sessionId) {
        return null;
    }

    @Override
    protected void doUpdate(Session session) {
//        System.out.println();
    }

    @Override
    protected void doDelete(Session session) {
//       delete(session);
    }

}
